<?php
// send_email.php
// 引入PHPMailer库
// 注意：在实际使用前，需要下载PHPMailer并放在项目目录中
// 下载地址: https://github.com/PHPMailer/PHPMailer

// 检查PHPMailer是否存在
if (!file_exists(__DIR__ . '/vendor/phpmailer/src/PHPMailer.php')) {
    die('错误: 未找到PHPMailer库。请先下载并放在项目目录中。');
}

// 引入PHPMailer类
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require __DIR__ . '/vendor/phpmailer/src/Exception.php';
require __DIR__ . '/vendor/phpmailer/src/PHPMailer.php';
require __DIR__ . '/vendor/phpmailer/src/SMTP.php';

// 引入数据库配置以获取SMTP设置
require 'config.php';

/**
 * 发送邮件函数
 * @param string $to_email 收件人邮箱
 * @param string $to_name 收件人姓名
 * @param string $subject 邮件主题
 * @param string $body 邮件内容
 * @param array $attachments 附件数组，每个元素是文件路径
 * @return bool 发送结果
 */
function send_email($to_email, $to_name, $subject, $body, $attachments = []) {
    global $pdo;

    try {
        // 获取SMTP设置
        $sql = "SELECT * FROM smtp_settings WHERE id = 1";
        if (!$pdo) {
            error_log('数据库连接对象 $pdo 为空');
            return false;
        }
        $stmt = $pdo->query($sql);
        $smtp_settings = $stmt->fetch(PDO::FETCH_ASSOC);

        if (!$smtp_settings) {
            error_log('未找到SMTP设置');
            return false;
        }

        // 创建PHPMailer实例
        $mail = new PHPMailer(true);

        // 配置SMTP
        $mail->isSMTP();
        $mail->Host = $smtp_settings['host'];
        $mail->SMTPAuth = true;
        $mail->Username = $smtp_settings['username'];
        $mail->Password = $smtp_settings['password'];

        // 配置加密
        if (!empty($smtp_settings['encryption'])) {
            if ($smtp_settings['encryption'] === 'ssl') {
                $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
                $mail->Port = 465;
            } elseif ($smtp_settings['encryption'] === 'tls') {
                $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
                $mail->Port = 587;
            }
        } else {
            $mail->Port = $smtp_settings['port'];
        }

        // 发件人信息
        $mail->setFrom($smtp_settings['from_email'], $smtp_settings['from_name']);

        // 收件人信息
        $mail->addAddress($to_email, $to_name);

        // 邮件内容
        $mail->isHTML(true);
        $mail->Subject = $subject;
        $mail->Body = $body;
        $mail->AltBody = strip_tags($body);

        // 添加附件
        foreach ($attachments as $file_path) {
            if (file_exists($file_path)) {
                $mail->addAttachment($file_path);
            }
        }

        // 发送邮件
        $mail->send();
        return true;
    } catch (Exception $e) {
        error_log('邮件发送失败: ' . $mail->ErrorInfo);
        return false;
    }
}

/**
 * 根据QQ号发送邮件
 * @param string $qq QQ号码
 * @param string $subject 邮件主题
 * @param string $body 邮件内容
 * @param array $attachments 附件数组，每个元素是文件路径
 * @return bool 发送结果
 */
function send_email_by_qq($qq, $subject, $body, $attachments = []) {
    // 构建QQ邮箱
    $to_email = $qq . '@qq.com';
    return send_email($to_email, '用户 ' . $qq, $subject, $body, $attachments);
}
?>